Generating print-ready documents to be printed by a printing system involves acquiring the information (content, graphics, production specs, etc.) required to view, process and output the desired document in an electronic form understandable by a print engine. Such systems can range from those that are simple and modestly expensive such as are well known to consumer users of personal computer systems, up to commercial printing systems that are capable of generating in the range of one hundred pages per minute in full color. Most systems tend to have a high-level objective of printing faster.
Typically printing systems bundle the processing, copy and print phases of printing into a single component. When data is actually to be printed, the rate at which the printer can print is dependent on the data type, its complexity and the computer processing power available for the data computations. Generally, a print system receives a “job” to be printed. The job is all of the data that is to be printed and can be stored either in electronic form or received as hard copy, such as publications or manuscripts which are “scanned” into the printing system. Each job is formatted in the system in a Page Description Language (PDL) such as PostScript file, ANSI, ASCII, PCL etc. A Page Description Language can be defined as a language which describes the appearance of a printed page.
In one printing system, a print engine is coupled to a controller which receives the input data in a non-rasterized PDL format, and processes the input data into a rasterized image as, e.g., a bit map. The rasterized image is then fed to the print engine for printing. One problem with this type of printing system is that the processing time in the controller to rasterize the data and transfer it to the print engine can slow the print engine's ability to print the data at full-rated speed, i.e., the print engine cannot receive data as fast as it can print. For example, uncomplicated data such as ASCII text can easily be translated at speeds greater than the print engine can print. However, if the complexity of the data is increased to include PostScript files and graphics then the rasterization speed can be reduced. Thus, the print system cannot operate in “real-time” as would be advantageous to process and print extremely large amounts of data.
A further problem with traditional printing systems is that jobs are often sent serially to the controller which is specifically designed to translate the job to a printable image. As the print jobs are input in series to the printer, a bottleneck can form at the printer because a second print job must wait to be processed while the first print job is being translated to a rasterized image by the controller. In both instances, the print engine remains idle thus wasting time and resources.
Several approaches have been developed to make printing faster. For example, faster serial processing utilizes optimized software and more expensive processors to increase job throughput. However, software optimization has its limits and faster processors are also limited by currently available technology.
Job parallel processing sends separate jobs to separate systems and then prints them on a common printer in an effort to increase printing speeds. One system which exploits job parallelism can be found in U.S. Pat. No. 5,819,014 which describes a printer architecture using network resources to create a distributed printer controller or translator. By distributing the translators across the network, print jobs may be processed in parallel. Each job is formatted in the system in a particular data type comprising a PDL such as a PostScript file, ASCII, PCL, etc. A distributed set of the translators is used for each data type, the translators each comprising a plurality of CPUs to simultaneously rasterize each data type. In real time operation, each translator on the network can formulate the rasterized image which is then fed over the network to the print engine. Job parallelism increases the flexibility of the printing system by allowing slow jobs to be processed while quicker jobs are completed and printing. However, job parallel processing often results in poor single job performance, unpredictable job time, and reduced throughput when there is only one long job in the queue.
Portable Document Format (PDF) based page parallel systems convert a job to PDF and then split the PDF file into pages which are converted to print-ready form on multiple independent processors, with the job being printed on a common printer. However, existing PDF-based solutions can be relatively slow due to their need to often convert from a different input language into PDF and then write the PDF file into an input spool disk. Also, page parallel processing often suffers from throughput inefficiencies because per-job overhead typically occurs on a per-page basis.
One environment which exploits page parallelism is Adobe Extreme. In this system the data input for a print job is normalized into a PDF format and stored on disk. The PDF format is essentially page independent guaranteed and thus facilitates segregating the job into page units for page parallel processing. A sequencer processing node takes the PDF jobs off the disk and writes them back onto a disk again a page at a time as individual files, one file per page. Rasterizing image processing nodes (RIP nodes) then convert the files into a print-ready form acceptable by a print engine. A RIP or Raster Image Processor generates bitmap images from a PDL stream.
Poor print performance on complex jobs can be particularly highlighted when the wrong combinations of printer settings such as, Page Parallel Rip (PPR), Caching, PPR-Caching, are chosen for a print job. Combinations of Page Parallel Rips and Caching can negatively impact the performance of a print job. Poor RIP performance cost time and money. This is especially true when the PDL contains complex printer settings such as, for example, embedded z-sort data, Variable-data Intelligent Personalized Postscript (VIPP), VIPP-Line Command Mode (LCM) data, Line Command Data Stream (LCDS) container data, and Data Base Master Files (DBMF).
Accordingly, what is needed in this art are increasingly sophisticated systems and method for improving efficiency and speed in systems which is not limited to job or page parallelism and which facilitates flow of a job in a print/copy environment.